home *** CD-ROM | disk | FTP | other *** search
- /* ------------------------------------------------------------------------
- -- ERWATTIN.SIX --
- -- Copyright (C) Logic Works, Inc. 1994 --
- -- --
- -- Stored function to insert ERwin attributes the Designer 2000 --
- -- dictionary --
- ------------------------------------------------------------------------- */
- CREATE OR REPLACE FUNCTION ERWATTIN(pEntName CI_ENTITIES.NAME%TYPE ,
- pName CI_ATTRIBUTES.NAME%TYPE,
- pFormat CI_ATTRIBUTES.FORMAT%TYPE,
- pMaxLen CI_ATTRIBUTES.MAXIMUM_LENGTH%TYPE,
- pOptional CI_ATTRIBUTES.NULL_VALUE%TYPE,
- pPrecision CI_ATTRIBUTES.PRECISION%TYPE,
- pDomain CI_DOMAINS.NAME%TYPE,
- pApp CI_APPLICATION_SYSTEMS.NAME%TYPE,
- pVersion CI_APPLICATION_SYSTEMS.VERSION%TYPE)
- RETURN CI_ATTRIBUTES.ID%TYPE
- AS
- TYPE recEntity IS RECORD
- (APPLICATION_SYSTEM_OWNED_BY CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY%TYPE,
- ID CI_ENTITIES.ID%TYPE,
- NAME CI_ENTITIES.NAME%TYPE);
- TYPE recAttribute IS RECORD
- (ENTITY_REFERENCE CI_ATTRIBUTES.ENTITY_REFERENCE%TYPE,
- ID CI_ATTRIBUTES.ID%TYPE,
- NAME CI_ATTRIBUTES.NAME%TYPE);
- TYPE recDomain IS RECORD
- (APPLICATION_SYSTEM_OWNED_BY CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY%TYPE,
- DATATYPE CI_DOMAINS.DATATYPE%TYPE,
- FORMAT CI_DOMAINS.FORMAT%TYPE,
- ID CI_DOMAINS.ID%TYPE,
- NAME CI_DOMAINS.NAME%TYPE);
- prAttribute recAttribute;
- stAttribute cioattribute.data;
- prDomain recDomain;
- prEntity recEntity;
- DomainRef CI_DOMAINS.ID%TYPE;
- EntityRef CI_ENTITIES.ID%TYPE;
- workingAppID CI_APPLICATION_SYSTEMS.ID%TYPE;
- act_status varchar2(100);
- act_warnings varchar2(100);
- BEGIN
- if cdapi.initialized = false then
- RETURN -1;
- end if;
- BEGIN
- IF pVersion = 0 THEN
- SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
- FROM CI_ENTITIES
- WHERE CI_ENTITIES.NAME=UPPER(pEntName)
- AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
- ELSE
- SELECT APPLICATION_SYSTEM_OWNED_BY, ID, NAME INTO prEntity
- FROM CI_ENTITIES
- WHERE CI_ENTITIES.NAME=UPPER(pEntName)
- AND CI_ENTITIES.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.VERSION=pVersion);
- END IF;
- EntityRef := prEntity.ID;
- EXCEPTION
- WHEN OTHERS THEN
- RETURN -1;
- END;
- BEGIN
- IF pDomain IS NOT NULL THEN
- IF pVersion = 0 THEN
- SELECT APPLICATION_SYSTEM_OWNED_BY,DATATYPE,FORMAT,ID,NAME INTO prDomain
- FROM CI_DOMAINS
- WHERE CI_DOMAINS.NAME = UPPER(pDomain)
- AND CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.LATEST_VERSION_FLAG='Y');
- ELSE
- SELECT APPLICATION_SYSTEM_OWNED_BY,DATATYPE,FORMAT,ID,NAME INTO prDomain
- FROM CI_DOMAINS
- WHERE CI_DOMAINS.NAME = UPPER(pDomain)
- AND CI_DOMAINS.APPLICATION_SYSTEM_OWNED_BY =
- (SELECT ID FROM CI_APPLICATION_SYSTEMS WHERE
- CI_APPLICATION_SYSTEMS.NAME = UPPER(pApp) AND
- CI_APPLICATION_SYSTEMS.VERSION=pVersion);
- END IF;
- DomainRef := prDomain.ID;
- ELSE
- DomainRef := -1;
- END IF;
- EXCEPTION
- WHEN OTHERS THEN
- DomainRef := -1;
- END;
- IF DomainRef != -1 THEN
- stAttribute.v.DOMAIN_REFERENCE := DomainRef;
- stAttribute.i.DOMAIN_REFERENCE := true;
- END IF;
- stAttribute.v.ENTITY_REFERENCE := EntityRef;
- stAttribute.i.ENTITY_REFERENCE := true;
- stAttribute.v.NAME := pName;
- stAttribute.i.NAME := true;
- stAttribute.v.FORMAT := pFormat;
- stAttribute.i.FORMAT := true;
- stAttribute.v.MAXIMUM_LENGTH := pMaxLen;
- stAttribute.i.MAXIMUM_LENGTH := true;
- stAttribute.v.OPTIONAL_FLAG := pOptional;
- stAttribute.i.OPTIONAL_FLAG := true;
- stAttribute.v.PRECISION := pPrecision;
- stAttribute.i.PRECISION := true;
- SELECT ENTITY_REFERENCE, ID, NAME INTO prAttribute
- FROM CI_ATTRIBUTES
- WHERE CI_ATTRIBUTES.NAME=UPPER(pName)
- AND CI_ATTRIBUTES.ENTITY_REFERENCE = EntityRef;
- stAttribute.v.ID := prAttribute.ID;
- stAttribute.i.ID := true;
- BEGIN
- cdapi.open_activity;
- cioattribute.upd(prAttribute.ID,stAttribute);
- cdapi.validate_activity(act_status, act_warnings);
- cdapi.close_activity(act_status);
- if act_status != 'Y' then
- cdapi.abort_activity;
- RETURN -1;
- else
- RETURN stAttribute.v.ID;
- end if;
- EXCEPTION
- WHEN OTHERS THEN
- if cdapi.stacksize > 0 then
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- else
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- end if;
- RETURN -1;
- END;
- EXCEPTION
- WHEN NO_DATA_FOUND THEN
- BEGIN
- cdapi.open_activity;
- cioattribute.ins(null,stAttribute);
- cdapi.validate_activity(act_status, act_warnings);
- cdapi.close_activity(act_status);
- if act_status != 'Y' then
- cdapi.abort_activity;
- RETURN -1;
- else
- RETURN stAttribute.v.ID;
- end if;
- EXCEPTION
- WHEN OTHERS THEN
- if cdapi.stacksize > 0 then
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- else
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- end if;
- RETURN -1;
- END;
- WHEN OTHERS THEN
- if cdapi.activity is not null then
- cdapi.abort_activity;
- end if;
- RETURN -1;
- END ERWATTIN;
- /
-